#include<bits/stdc++.h>
using namespace std;

//class Solution {
//public:
//    int pivotIndex(vector<int>& nums) {
//        nums.insert(nums.begin(), 1, 0);
//        int n = nums.size();
//        vector<int> dp(n);
//        // 创建前缀和数组
//        for (int i = 1; i < n; i++)
//        {
//        	dp[i] = dp[i - 1] + nums[i];
//		}
//        // 寻找中间下标
//        for (int i = 1; i < n; i++)
//        {
//        	if (dp[i - 1] == dp[n - 1] - dp[i])
//        	{
//        		return i - 1;
//			}
//		}
//		return -1;
//    }
//};

//class Solution {
//public:
//    string removeDuplicates(string s) {
//        stack<int> st;
//        for (int i = 0; i < s.size(); i++)
//        {
//        	if (!st.empty() && s[i] == st.top())
//        	{
//        		st.pop();
//			}
//			else
//			{
//				st.push(s[i]);
//			}
//		}
//		string tmp;
//		while(!st.empty())
//		{
//			int top = st.top();
//			tmp.push_back(top);
//			st.pop();
//		}
//		reverse(tmp.begin(), tmp.end());
//		return tmp;
//    }
//};

class Solution {
public:
    int lastStoneWeight(vector<int>& stones) {
        priority_queue<int> pq;
        for (auto& e : stones)
        {
            pq.push(e);
        }
        int x = 0, y = 0;
        while(pq.size() > 1)
        {
        	y = pq.top();
        	pq.pop();
        	x = pq.top();
			pq.pop();
			if (x != y)
			{
				pq.push(y - x);
			} 
		}
		int ret = pq.size() == 0 ? 0 : pq.top();
		return ret;
    }
};

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
	
	queue<int> q;
	q.push(10);
	q.push(20);
	q.push(30);
	cout << q.front() << endl;
	cout << q.back() << endl;
	q.pop();
	
//	string s;
//	cin >> s;
//	cout << s;
	return 0;
}